package com.ibeeking.found.cop.b.rest.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ibeeking.found.common.entity.CurrentUser;
import com.ibeeking.found.cop.service.common.dos.FriendsTagsDO;
import com.ibeeking.found.cop.service.common.dos.FriendsTagsRelDO;
import com.ibeeking.found.cop.service.common.param.FriendsTagsBatchParam;
import com.ibeeking.found.cop.service.common.param.FriendsTagsParam;
import com.ibeeking.found.cop.service.common.param.FriendsTagsGroupParam;
import com.ibeeking.found.cop.service.common.query.FriendsTagsPageQuery;
import com.ibeeking.found.cop.service.common.query.FriendsTagsQuery;
import com.ibeeking.found.cop.service.common.vo.FriendsTagsVO;

import java.util.List;

public interface IFriendsTagsService {

    /***
     * 查询列表
     */
    List<FriendsTagsVO> list(FriendsTagsQuery query);

    /***
     * 分页查询
     */
    Page<FriendsTagsVO> pageList(FriendsTagsPageQuery pageQuery);

    /***
     * 批量处理标签
     */
    Boolean changeTagsBatch(FriendsTagsBatchParam param, CurrentUser currentUser);

    /***
     * 批量添加标签
     */
    Boolean addTagsBatch(FriendsTagsBatchParam param, CurrentUser currentUser);

    /***
     * 批量删除标签
     */
    Boolean delTagsBatch(FriendsTagsBatchParam param, CurrentUser currentUser);
    /***
     * 新增
     */
    Boolean add(FriendsTagsParam param);
    /***
     * 批量添加标签
     */
    Boolean addBatch(List<FriendsTagsRelDO> addList);
    /***
     * 修改
     */
    Boolean modify(FriendsTagsParam param);
    /***
     * 批量修改
     */
    Boolean updateBatch(List<FriendsTagsDO> entityDOS);
    /***
     * 通过id查询
     */
    FriendsTagsVO view(Long id);


    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status);


    /***
     * 通过id删除
     */
    Boolean del(Long id);

    /***
     * 从企业微信同步客户标签
     */
    Integer syncFriendsTagsFromWx();
    /***
     * 从企业微信同步客户信息批量保存
     */
    Integer saveOrUpdateOrDeleteBatchFriendsTags(Long tenantId, List<FriendsTagsGroupParam> params);
}
